<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>apply与call方法的区别</title>
</head>
<body>
    
</body>
<script>
    /*
        apply 和 call方法都是用来改变this指向的方法，只要是是有用到this的地方都是可以用这个
            来修改this的指向
        他们第一个参数是需要修改到this指向的对象，后面可以跟参数

        区别
            apply() 只能接收两个参数，第一个是对象，第二个是数组

            call() 可以接收多个参数，第一个参数是对象， 之后的参数是正常的形参
    */
    
    function sum(a,b){
        console.log(this)
        console.log(a+b)
    }

    let obj = {
        name:'jimmy',
        age:22
    }

    sum.apply(obj,[5,7])    
    /*
        {name: "jimmy", age: 22}
        12
    */

    sum.call(obj,1,2)
    /*
        {name: "jimmy", age: 22}
        //3
    */
</script>
</html>